###############################################################################
#NAME: Простая страница
###############################################################################
@USE
module.p
@CLASS
page
@BASE
module
###############################################################################
@factoryCreate[h][result]
# *** тут должно быть имя класса ***
$result[^page::init[$h]]
###############################################################################
@auto[sModuleScriptPath]
$factory:hClasses.[$self.CLASS_NAME][$self.CLASS]
###############################################################################
# инициализация класса страницы
# все параметры должны быть заданы обязательно,
# т.к. используются в методах базового класса (module)
@init[param]
$_id[$param.id]
$_core[$param.core]
# свойства страницы
$_val[^_core.getAttributes[$_id]]
$_pSQL[$param.pSQL]
###############################################################################



###############################################################################
@xContent[]
$result[^xdoc::create{^xml[]}]
###############################################################################



###############################################################################
@xml[]
<?xml version="1.0" encoding="utf-8" ?>
<document lang="ru">
	<head>
		<!-- йа шапко -->
		<title>$_val.title</title>
		<description>$_val.description</description>
		<keywords>$_val.keywords</keywords>
	</head>
	^breadCrumb[$_id]
	^menuBrothers[$_id]
	^menuOffsprings[$_id]
	<content><![CDATA[^taint[as-is][$_val.content]]]></content>
</document>
###############################################################################



###############################################################################
# отображение редактора страницы в админке
###############################################################################
@manage[]

$uri[http://$env:SERVER_NAME^MAIN:core.id2uri[$_id]]
$uri_debug[$uri?debug=xml]
$uri[$uri?debug=plain]

$o[<scr]${o}ipt>

	var mainTabPanel = Ext.getCmp('mainTabPanelID');
	var currentHistoryStep = 0;


	// события формы

	function saver(){
		fs.form.submit({
			url: 'xml-save.xml',
			params: { _id: '$_id' },
			waitMsg: 'Сохранение...'
		});
	}

	function loader(){
		currentHistoryStep = 0;
		fs.form.load({
			url:'xml-form.xml',
			params: {
				_id: '$_id',
				_history_step: 0
			},
			waitMsg: 'Загрузка...'
		});

#		Ext.getCmp(editorInstance.Name).setValue2();
	}

	function undo_loader(){
		currentHistoryStep++;
		fs.form.load({
			url:'xml-form.xml',
			params: {
				_id: '$_id',
				_history_step: currentHistoryStep
			},
			waitMsg: 'Загрузка (' + currentHistoryStep + ')...'
		});
	}

	function redo_loader(){
		currentHistoryStep--;
		if(currentHistoryStep < 0){ currentHistoryStep = 0 }
		fs.form.load({
			url:'xml-form.xml',
			params: {
				_id: '$_id',
				_history_step: currentHistoryStep
			},
			waitMsg: 'Загрузка (' + currentHistoryStep + ')...'
		});
	}


	// перезагрузка iframe

	function reload_iframe(){
		mainTabPanel.getActiveTab().setSrc();
	}



	// Удалить старые табы
	mainTabPanel.items.each(	function(item){	mainTabPanel.remove(item);	}, mainTabPanel.items );

	// Добавить табы
	mainTabPanel.add(
		{
			title: 'Редактирование',
			iconCls: 'ico_edit',
			html: '<div class="big_form_container" id="form-ct"></div><!--<div id="form-ct-file"><div id="form-ct-in"></div></div>-->',
			tbar: new Ext.Toolbar({
	    	height: 26,
	    	items: [{
						text: 'Сохранить',
						iconCls: 'ico_save',
						tooltip: {
							cls: 'none',
							text: 'Сохранить изменения'
						},
						listeners : { click: saver }
				}, '-', {
						text: 'Отмена',
						iconCls: 'ico_undo',
						tooltip: {
							cls: 'none',
							text: 'Отменить последнее изменение'
						},
						listeners : { click: undo_loader }
				},{
						text: 'Повтор',
						iconCls: 'ico_redo',
						tooltip: {
							cls: 'none',
							text: 'Повторить последнее изменение'
						},
						listeners : { click: redo_loader }
				},'->',{
						text: 'Восстановить',
						iconCls: 'ico_cancel',
						tooltip: {
							cls: 'none',
							text: 'Восстановить последнюю сохраненную версию'
						},
						listeners : { click: loader }
				}]
	    })
		},{
			title: 'Просмотр',
	    xtype: "iframepanel",
	    id: 'preview_iframe',
	    iconCls: 'ico_view',
	    defaultSrc: '$uri',
	    tbar: new Ext.Toolbar({
	    	height: 26,
	    	items: [{
					text: 'Обновить',
					iconCls: 'ico_update',
					tooltip: {
						cls: 'none',
						text: 'Обновить страницу'
					},
					listeners : { click: reload_iframe }
				}]
	    }),
	    closable: false
	  },{
			title: 'Просмотр XML',
	    xtype: "iframepanel",
	    id: 'debug_iframe',
	    iconCls: 'ico_debug_xml',
	    defaultSrc: '$uri_debug',
	    tbar: new Ext.Toolbar({
	    	height: 26,
	    	items: [{
					text: 'Обновить',
					iconCls: 'ico_update',
					tooltip: {
						cls: 'none',
						text: 'Обновить страницу'
					},
					listeners : { click: reload_iframe }
				}]
	    }),
	    //autoHeight: true, // всё портит в опере 9.50 и ничего не прибавляет в FF
	    //height: '100%',   // ничего не дает в опере
	    closable: false
	  }
	);

	mainTabPanel.setActiveTab(0);


	///////////////////////////////////////////////////////////////////////////
	// форма редактора

  var fs = new Ext.form.FormPanel({
      labelAlign: 'right',
      id: 'editor_form_panel',
      labelWidth: 75,
      waitMsgTarget: true,
			border: false,

      // configure how to read the XML Data
      reader : new Ext.data.XmlReader({
          record : 'data',
          success: '@success'
      }, [ 'content', 'description', 'title', 'keywords' ]),

      // reusable eror reader class defined at the end of this file
      errorReader: new Ext.form.XmlErrorReader(),

			items: [{
						xtype:'textfield',
						fieldLabel: 'Title',
						name: 'title',
						//width:600
						width:'50%'
						//vtype:'email'
				},{
						xtype:'textarea',
						fieldLabel: 'Description',
						name: 'description',
						//width:600,
						width:'100%',
						height: 50
				},{
						xtype:'textarea',
						fieldLabel: 'Keywords',
						name: 'keywords',
						//width:600,
						width:'100%',
						height: 50
				}, {
						xtype:'htmleditor',
						fieldLabel: 'Текст',
						name: 'content',
						id: 'content',
						//width:600,
						width:'100%',
						height: 350
				}]
  });

  fs.render('form-ct');
  loader();




$o[</scr]${o}ipt>


###############################################################################